軟件逆向分析包括以下階段:
文件裝載階段:本階段的主要工作是,讀入目標文件并進行與目標文件相關的一些初步分析,包括文件格式解析(如Windows系列的PE格式和Linux操作系統上的ELF格式)、文件信息搜集和文件性質判定等。通過文件裝載階段的操作,可以分析出文件執行的入口地址,初步分析文件的數據段和代碼段信息,以及文件運行所依賴的其他文件信息等。
指令解碼階段:本階段的主要工作是,根據目標體系結構的指令編碼規則,對目標文件中使用的指令進行解釋、識別和翻譯。可以將指令解碼階段的工作看作是一個反匯編器。根據逆向分析的目的和手段,可以將目標指令映射為匯編指令,也可以映射為某種中間表示形式。
語義映射階段:本階段的主要工作是,將二進制指令的執行效果通過語義描述的方法表示出來,并加以記錄。由于指令的執行語義往往保存在與體系結構相關的文獻資料中,因此該映射過程需要技術人員手工實現。但即便如此,仍需要用某種方法來描述指令的語義。
相關圖構造階段:本階段的主要工作是,借助于編譯理論中的許多知識完成相關圖構造,如控制流圖(Control Flow Graph,CFG)、調用圖(Call Graph,CG)和依賴圖(Dependence Graph,DG)等。在此基礎之上便可以完成諸如控制流分析、數據流分析和依賴分析等操作,從而進一步對程序進行切片等高級操作。
過程分析階段:經過編譯器翻譯后的程序大多是面向過程的,即使對于面向對象語言生成的可執行程序來說,編譯器依然通過相關技術將其翻譯為過程式代碼。過程分析階段的主要目標就是將目標文件中的過程信息恢復出來,包括過程邊界分析、過程名(可能并不存在)、參數列表和返回值信息。過程邊界信息可以通過相關過程調用指令和返回指令的信息得到,有時也需要借助一些特殊的系統庫函數調用(如exit函數)。
類型分析階段:本階段的目標在于,正確反映原程序中各個存儲單元(包括寄存器和內存)所攜帶的類型信息。該分析主要有兩種方式,分別是基于指令語義的方式和基于過程式分析的方式。
結果輸出階段:結果輸出是逆向分析的最終階段,該階段決定了如何將分析結果有效地呈現在分析人員面前。例如,輸出結果是以某種高級語言為載體的程序代碼,這樣容易被人理解,通過簡單的修改便可以應用在其他軟件系統中。當然,輸出的方式可以是多種多樣的,究竟選擇哪種方式完成依賴于具體分析的需求。
回答所涉及的環境:聯想天逸510S、Windows 10。
軟件逆向分析包括以下階段:
文件裝載階段:本階段的主要工作是,讀入目標文件并進行與目標文件相關的一些初步分析,包括文件格式解析(如Windows系列的PE格式和Linux操作系統上的ELF格式)、文件信息搜集和文件性質判定等。通過文件裝載階段的操作,可以分析出文件執行的入口地址,初步分析文件的數據段和代碼段信息,以及文件運行所依賴的其他文件信息等。
指令解碼階段:本階段的主要工作是,根據目標體系結構的指令編碼規則,對目標文件中使用的指令進行解釋、識別和翻譯。可以將指令解碼階段的工作看作是一個反匯編器。根據逆向分析的目的和手段,可以將目標指令映射為匯編指令,也可以映射為某種中間表示形式。
語義映射階段:本階段的主要工作是,將二進制指令的執行效果通過語義描述的方法表示出來,并加以記錄。由于指令的執行語義往往保存在與體系結構相關的文獻資料中,因此該映射過程需要技術人員手工實現。但即便如此,仍需要用某種方法來描述指令的語義。
相關圖構造階段:本階段的主要工作是,借助于編譯理論中的許多知識完成相關圖構造,如控制流圖(Control Flow Graph,CFG)、調用圖(Call Graph,CG)和依賴圖(Dependence Graph,DG)等。在此基礎之上便可以完成諸如控制流分析、數據流分析和依賴分析等操作,從而進一步對程序進行切片等高級操作。
過程分析階段:經過編譯器翻譯后的程序大多是面向過程的,即使對于面向對象語言生成的可執行程序來說,編譯器依然通過相關技術將其翻譯為過程式代碼。過程分析階段的主要目標就是將目標文件中的過程信息恢復出來,包括過程邊界分析、過程名(可能并不存在)、參數列表和返回值信息。過程邊界信息可以通過相關過程調用指令和返回指令的信息得到,有時也需要借助一些特殊的系統庫函數調用(如exit函數)。
類型分析階段:本階段的目標在于,正確反映原程序中各個存儲單元(包括寄存器和內存)所攜帶的類型信息。該分析主要有兩種方式,分別是基于指令語義的方式和基于過程式分析的方式。
結果輸出階段:結果輸出是逆向分析的最終階段,該階段決定了如何將分析結果有效地呈現在分析人員面前。例如,輸出結果是以某種高級語言為載體的程序代碼,這樣容易被人理解,通過簡單的修改便可以應用在其他軟件系統中。當然,輸出的方式可以是多種多樣的,究竟選擇哪種方式完成依賴于具體分析的需求。
回答所涉及的環境:聯想天逸510S、Windows 10。